import 'package:enterprise_v6_app/app/components/app_scroll_behavior.dart';
import 'package:enterprise_v6_app/app/core/utils/hide_keyboard.dart';
import 'package:enterprise_v6_app/app/core/utils/locale_util.dart';
import 'package:enterprise_v6_app/app/core/values/themes.dart';
import 'package:enterprise_v6_app/global.dart';
import 'package:enterprise_v6_app/router/app_pages.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';

void main() async {
  await Global.init();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    //页面适配初始化
    return ScreenUtilInit(
        designSize: const Size(375, 831),
        minTextAdapt: true,
        splitScreenMode: true,
        builder: (context, child) {
          // initToast(); //初始化弹窗属性
          //GetMaterialApp会创建路由，注入它们，注入翻译，注入你需要的一切路由导航。
          //如果你只用Get来进行状态管理或依赖管理，就没有必要使用GetMaterialApp。
          //GetMaterialApp对于路由、snackbar、国际化、bottomSheet、
          //对话框以及与路由相关的高级apis和没有上下文（context）的情况下是必要的。
          return GetMaterialApp(
            theme: appThemeData,
            builder: FlutterSmartDialog.init(
              builder: (context, child) {
                return HideKeyboard(
                    child: MediaQuery(
                  data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.0)),
                  child: ScrollConfiguration(
                      // 同意滑动管理
                      behavior: AppScrollBehavior(),
                      child: child ?? const SizedBox()),
                ));
              },
            ),
            //用于观察导航器的事件
            //初始化弹框控件
            // builder: EasyLoading.init(),
            navigatorObservers: [FlutterSmartDialog.observer],
            debugShowCheckedModeBanner: false,
            // 日志
            enableLog: !Global.isRelease,
            // 多语言
            locale: AppLocaleUtil.currentLocale,
            // fallbackLocale: AppLocaleUtil.fallbackLocale,
            supportedLocales: AppLocaleUtil.supportedLocales,
            localizationsDelegates: const [
              GlobalMaterialLocalizations.delegate,
              GlobalWidgetsLocalizations.delegate,
              GlobalCupertinoLocalizations.delegate,
            ],
            //要处理到未定义路线的导航（404错误），可以在GetMaterialApp中定义unknownRoute页面。
            // unknownRoute: GetPage(name: '/notfound', page: () => UnknownRoutePage()),
            initialRoute: AppPages.initial,
            getPages: AppPages.routes,
          );
        });
  }
}
